字节跳动 C++面经

菜鸡一名，算法不太行，项目经验也没有。投的C++开发岗 

5.9笔试： 
第一题暴力过了百分之九十左右 
第二题AC 
第三题暴力过了百分之七十 
第四题没看 

笔试完感觉自己凉了，没想到居然过了（猜测可能是投的人不多）。5.11日收到消息，约的5.13一面 

------------------------------------------------------------------------------------
5.13一面（1h30min 左右）： 
面试体验非常好，以聊天的方式展开 

1.自我介绍 
2.了解过C++和C的区别吗？ 
答：C++是面向对象，C是面向过程。C++具有封装、继承、多态三种特性。C++增加了许多类型安全的功能，比如强制类型转换。还有智能指针吧啦吧啦…… 
3.谈到智能指针，你了解多少？ 
简单说了一下，但是只说了三个，weak_ptr没提 
4.用过const关键字吗？ 
经常用，然后把const和define进行了一个对比进行了一点点拓展 
5.了解的C++的容器？ 
用得最多的的是map，vector吧啦吧啦…… 
6.map的底层实现知道吗？ 
知道，红黑树。然后说了一些红黑树的基本的概念。（我怕他要我手撕红黑树，赶紧说只是了解过，但是没有自己去手撸过红黑树的代码过 
7.了解过hash吗？ 
懂他的这个思想，然后说了一下我平时的常用方式。然后哈希冲突之类的…… 
8.C++和Java的区别知道吗？ 
解释说因为很少用Java，也没有去了解太多。面试官就懂我意思了
9.了解过引用吗？ 
自己把指针和引用放在一起说了一下区别啊之类的 
10.Android ListView和RecyclerView的区别？ 
RecyclerView可以根据不同的ViewHolder实现不同的Item（我只是做了一个Android小项目，没有更多的去学Android，加上已经大半年了，忘得差不多了。所以问到Android的我基本都是死） 
11.完成Android项目中印象深的事情？ 
随便谈了谈 
12.Activity生命周期？ 
没回答上来……（Android真的忘得差不多了）不晓得一面会问，没有去复习 

算法题： 
1.链表的入环节点 
两个指针，一个一次走两步，一次走一步，相遇后一个指针回到头节点，两个指针一起走，再次相遇的点就是入环节点 
2.链表重新排序，L1,L2,L3…Ln，排成L1,Ln,L2,Ln-1… 
当时***了，因为看别人面试都是一道算法题，就有点懵+慌，想着面试官是不是要搞我了。用的是反转链表之后再进行合并，然后合并到中间就行。（面试结束后再看了一下题，发现用双端队列不就轻松AC。我是个***…… 

最后： 
有什么想问面试官的？ 
问了一下学习路线，还有就是QT的到底怎么样之类的
